// 引入发送验证码对象
const config = require('../config')
// 引入redis数据库
const redisClient = require('../db/redis')

// 获取验证码
exports.getCode = async (req, res) => {
  // 获取用户发送的手机号
  const phone = req.body.phone
  const code = config.createCode(6) // 生成6位随机验证码

  // 发送验证码配置对象
  const params = {
    PhoneNumbers: phone,
    SignName: '邓生龙的个人博客',
    TemplateCode: 'SMS_264840680',
    TemplateParam: code
  }

  const requestOption = {
    method: 'POST',
    formatParams: false
  }

  // 发送验证码
  try {
    const result = await config.client.request('SendSms', params, requestOption)
    // 发送成功
    if (result.Message === 'OK') {
      // 将验证码保存在redis数据库中
      redisClient.set(`sms_${phone}`, JSON.parse(code).code).then(async () => {
        redisClient.expire(`sms_${phone}`, 300)
      })

      // 返回响应
      res.cc('发送成功', 0)
    } else {
      // 发送失败
      res.cc(result)
    }
  } catch (err) {
    res.cc(err)
  }
}
